package com.nameless.util;

import java.util.Calendar;
import java.util.Date;

/**
 * -*- coding:utf-8 -*-
 *
 * @author 太阳偷渡青山
 * @software IntelliJ IDEA
 * @date 2022/10/14 15:58
 * @Description
 */
public class UserFilterIdCardUtil {

    /**
     * 根据身份证号获取年龄
     *
     * @param idCard 身份证
     * @return {@link Integer}
     */
    public static Integer getAgeByIdCard(String idCard){
        Integer age = 0;
        //获取当前时间
        Calendar cal = Calendar.getInstance();
        Date date = new Date();
        //15位身份证号
        if (idCard.length() == 15){
            // 身份证上的年份(15位身份证为1980年前的)
            String uyear = "19" + idCard.substring(6, 8);
            // 身份证上的月份
            String uyue = idCard.substring(8, 10);
            // 当前年份
            int fyear = cal.get(Calendar.YEAR);
            // 当前月份
            int fyue = cal.get(Calendar.MONTH) + 1;
            if (Integer.parseInt(uyue) <= fyue) {
                age = fyear - Integer.parseInt(uyear) + 1;
                // 当前用户还没过生
            } else {
                age = fyear - Integer.parseInt(uyear);
            }
            //18位身份证号
        }else if(idCard.length() == 18){
            // 身份证上的年份
            String year = idCard.substring(6).substring(0, 4);
            // 身份证上的月份
            String yue = idCard.substring(10).substring(0, 2);
            // 当前年份
            // 当前年份
            int fyear = cal.get(Calendar.YEAR);
            // 当前月份
            int fyue = cal.get(Calendar.MONTH) + 1;
            // 当前月份大于用户出身的月份表示已过生日
            if (Integer.parseInt(yue) <= fyue) {
                age = fyear - Integer.parseInt(year) + 1;
                // 当前用户还没过生日
            } else {
                age = fyear - Integer.parseInt(year);
            }
        }
        return age;
    }

    /**
     * 获取出生日期  yyyy/MM/dd
     * @param idCard 身份证
     * @return {@link String}
     */
    public static String getBirthdayByIdCard(String idCard){
        String birthday="";
        String year="";
        String month="";
        String day="";
        //15位身份证号
        if (idCard.length() == 15){
            // 身份证上的年份(15位身份证为1980年前的)
            year = "19" + idCard.substring(6, 8);
            //身份证上的月份
            month = idCard.substring(8, 10);
            //身份证上的日期
            day= idCard.substring(10, 12);
            //18位身份证号
        }else if(idCard.length() == 18){
            // 身份证上的年份
            year = idCard.substring(6).substring(0, 4);
            // 身份证上的月份
            month = idCard.substring(10).substring(0, 2);
            //身份证上的日期
            day=idCard.substring(12).substring(0,2);
        }
        birthday=year+"/"+month+"/"+day;
        return birthday;
    }

}